在 JavaScript 的生態圈中,npm 無疑是一個非常重要的工具,畢竟現在開發者如果什麼東西都要重新發明輪子,那大概時間永遠都不夠用,所以要站在巨人的肩膀上,才能夠站的更高,看的更遠。
但你有想過 npm 上面的套件都是怎麼來的嗎?它除了是套件管理工具之外,還是一個發佈套件的平台,所以筆者這個專案會直接發佈到 npm 上,讓其他開發者可以直接透過 npm 來安裝並使用這個 SDK。
package.json
對於一個套件來說,package.json
的重要性應該不用筆者多說,這裡面會記錄這個套件的基本資料、版本、相依的套件以及提供什麼東西給其他開發者使用。
首先我們需要填寫基本資料,這些資料會顯示在 npm 上,讓其他開發者可以看到這個套件的基本資料。
建議讀者可以搭配原始碼一起閱讀,原始碼網址為 https://github.com/taichunmin/chameleon-ultra.js/blob/master/package.json
npm 是採用 semantic versioning 這個版本號的規則,對於已經熟悉這個規則的開發者來說,很容易可以辨識這次更新是不是重大更新。另外,npm 對於已發佈的套件基本上限制很多,很難撤回已發佈的版本,也不能重新上傳已經上傳過的版本號,所以筆者會建議如果讀者也想發佈 npm,可以先花點時間了解一下這個版本號的規則。
在之前的文章,筆者已經分享過 README.md,但在 npm 上面也會顯示套件的 README.md,所以也需要用心把這個檔案寫好,並且注意網址都要使用絕對路徑,這樣才不會發生連結失效的問題。
建議讀者可以搭配原始碼一起閱讀,原始碼網址為 https://github.com/taichunmin/chameleon-ultra.js/blob/master/.npmignore
在把 SDK 發佈到 npm 之前,我們需要先排除不需要上傳到 npm 上的檔案,以降低套件的檔案大小。
首先筆者會把 .gitignore
複製成 .npmignore
,然後把 dist
資料夾從 .npmignore
刪除。
然後筆者就會使用 npm publish --dry-run
來檢查並列出哪些檔案會被上傳:
$ npm publish --dry-run
npm notice 📦 chameleon-ultra.js@0.1.2
npm notice === Tarball Contents ===
# 會被上傳的檔案清單
npm notice === Tarball Details ===
npm notice name: chameleon-ultra.js
npm notice version: 0.1.2
npm notice filename: chameleon-ultra.js-0.1.2.tgz
npm notice package size: 202.0 kB
npm notice unpacked size: 1.1 MB
npm notice shasum: 8bfdafb7188e67b229db9c810ccbb7b8165f09c2
npm notice integrity: sha512-qdi98BiFmeeih[...]Fvo8qQM/vpekg==
npm notice total files: 45
npm WARN This command requires you to be logged in to https://registry.yarnpkg.com (dry-run)
npm notice Publishing to https://registry.yarnpkg.com with tag latest and default access (dry-run)
當這個指令執行完以後,就需要仔細查看哪些檔案是不需要的,然後一一列舉到 .npmignore
檔案中,來排除不需要上傳的檔案。